<?php
/**
 * Created by phpstrom.
 * User:wangyahe
 * Date: 2017/6/15
 * Time: 20:04
 */
//0615-----------------------
//一：就是进行前台微信的基本消息管理：循环数据，编辑，删除；
//---------1.循环出数据：
//进行一对一的多表关联
//手册中搜索：多表关联-----使用一对一的关联，hasone的方法;
//就是
//public function keywords()
//{
//注意参数，是在BaseContent的模型中建立一个keywords()的方法；参数是（keywords表中的外键，还有就是basecontent表中的主键）
	//参数：'\system\model\Keywords'、关键词表中与BaseContent表关联字段、回复内容主键
//	return $this->hasOne(Keywords::class,'module_id','id');
//}
//写完这个函数后就到wx.php 即basecontent的控制器中的index方法中进行调用所有的数据
//$field = BaseContent::paginate(2);
//然后到分配变量了，因为是老师自己定义的分配变量的函数，所以要进去道Hdprocessor中的template（）的方法中设定函数所需的参数，在设定参数时将tpl=null,改为'',然后判断的时候将is_null改为empty（）；
//然后加入$args参数 public function template($tpl='', $args = []){
//return $this->template('',compact('field'));
//然后到前台的模板中进行数据的调用，注意刚刚的keywords方法中的关联的数据关键字的数据的调用方法是
//<td>{{$d->keywords->keywords}}</td>---实际上是在这里调用的keywords(hasone)的方法
//-----------2.进行编辑
//首先前台末班眼传递参数，所以要去system中的helper中修改url函数，主要还是设定参数，在这里使用了一个
//function url ( $url , $module = '' , $args = [] )加入了一个参数为$args = []，
//return __ROOT__ ."?m=".$module."&action=controller/" . str_replace('.','/',$url).'&'.http_build_query($args);在这里使用了http_build_query($args)作用是传递id然后可以显示id的
//上面的设置好了医护就可以进行get来传参了

//在编辑的时候又进行了简化：通过三元表达式
//public function post(){
	//获得get参数
//	$id=\houdunwang\request\Request::get('id');
	//然后进行判断$id的有无，然后进行看是编辑还是添加，然后这里使用了三元表达式，2句代码就可以
//	注意这里实在wx.php中进行的，是baseContent的controller；so
	//党能够找到对应id的数据就找--即编辑，如果找不到就实例化一个类--即添加；
//	$baseModel=\module\base\model\BaseContent::find($id) ? :new \module\base\model\BaseContent();
//	然后如果是编辑的话要将旧数据进行分配变量
//	因为wx类继承了Hdpriocessor所以可以调用里面的分配变量的方法 so
//	$this->template('',compact('baseModel'));
	//然后进行添加是就要有post提交
//	if(IS_POST){
		//下面是无论是添加还是编辑2句代码就可以解决：就可以将数据存到数据库中了；
//		$post=\houdunwang\request\Request::post()
//		$baseModel->save($post);
		//----添加关键词的表
		//注意这里只是将basecontent--即回复消息的表中的数据存进去了,然后回复消息表与关键字的表是通过basecontent里面的主键id与关键字的表格keywords的表格里面的module_id是一个意思；
//		因为还要通过先将回复消息的内容存进去然后就是将关键字存进去so:
//		所以要将basecontent表中的ID再存储到post中
//		$post['module_id']=$baseModel['id'];
		//然后调用keywords的controllerWeChat里面写入方法saveKeywords();并肩获得的post的所有数据传导方法中将post的数据进行添加到关键字的数据表中
//		$this->saveKeywords($post);
//--------------------------------------然后就到关键字的控制器中进行写入此方法
//       final function saveKeyWords($post)
//		{
			//这里也是使用一个简单的方法
//			$where=[
//				['module_id',$post['id']],
//				['module',\houdunwang\request\Request::get(m)]
//			];
			//这里是通过参数获得的模块去keywords里面进行查找对应参数的数据
			//看它是否存在，若存在就是--编辑--查找到这一条数据，若是不存在就是--添加--实例化一个类，然后下面的$keyWordsModel就是一条空的数据
//			$keyWordsModel=\system\model\Keywords::find($where)->first() ? : new \system\model\Keywords();
	//然后就是将get获得的参数的m是模块存到post数据中，然后再将post中的所有数据进行更新或添加
//			$data['module']=\houdunwang\request\Request::get('m');
			//若是编辑就是将查找到的这一条数据，然后将post的数据进行覆盖，若是一条空数据那就是将数据进行添加
//			然后再将post中的所有数据进行传入到数据库中所以是更新或添加
//				$keyWordsModel->save($data);
//		}

//--------------------------------跳出方法了，----------
//接着是进行添加或是编辑的成功提示
//		return $this->setRedirect(url('wx.index'))->success('操作成功');
//	}//if(is_post)结束
//---------------然后就是将添加或是编辑的数据进行分配到模板中
//	需要注意的是这里是将回复消息和关键字的分配变量是分开的
//	然而这里的关键字的分配变量是通过在关键字的controller中写入一个方法assignKeywords（$id），并且将id也传到方法中去。
//	----------跳到关键字的controller中进行写上assignKeywords
//	final function assignKeywords($module_id)
//	{
//		同样的还是使用简便的方法
//		$where=[
//			['module_id',$module_id],
//			['module',\houdunwang\request\Request::get('m')]
//		];
		//还是三元表达式(是根本用不到空的)
//		$keywordsModel=\system\model\Keywords::find($where)->first() ? : new \system\model\Keywords();
		//然后就是将获得数据进行分配变量
//		View::with('keywords',$keywordsModel['keywords']);
//	}
	//然后是：回复内容的分配变量的方法是：调用HdController中的方法template；来进行加载模板
//		return $this->template('',compact('base'));
//	}//post的函数结束（就是编辑和添加的函数结束）
//}
//-----然后就是删除:删除回复消息，还要删除关键字
//1.删除回复消息：
//public function del( )
//{
	//1.首先获得传递的参数
//	$id = \houdunwang\request\Request::get('id');
//-------通过这个id到回复消息的数据库中去查找这条数据，删除回复消息
//	$baseContent = \module\base\model\BaseContent::find($id);
	//然后到数据库中去搜索删除destroy
//	$baseContent->destroy();
//-----3.删除关键字
//	这里还是调用一下关键字的controller的里面的方法
//	$this->delKeywords($id);

//----------------------然后进入到delKeywords（）的方法里面
//	final function delKeywords($module_id)
//{
//	$where = [
		//获得内容的ID在keywords中的module_id
//		['module_id' => $module_id],
		//获得模块的名字，通过get参数中的m
//		['module', Request::get('m')]
//	];
//	三元表达式：就是通过module_id去关键字的数据库中查找数据，如果找的到就删除；然后在这里是不会出现找不到数据的这种情况的；
//	$keyModel = \system\model\Keywords::find($module_id) ?: new \system\model\Keywords();
	//进行删除
//	$keyModel->destory();
//}delKeywords结束
//	---------跳出这个函数到wx.php 中
	//然后就是进行删除成功的提示
//	return $this->setRedirect(url('wx.index'))->success('操作成功');
//}
//}
//然后就是微信了------------------------------------------------------------------------------
//首先微信的模块要到app\wechat里面去做；
//1.测试连接是在api中进行
//2.然后通过在modele\base\system\processor进行测试
//在api中的构造函数中与微信进行连接：WeChat::valid();
//public function __construct()
//{
	//验证微信通讯,在与微信通讯验证之前，需要注意：在中间件中进行Config::set('wechat')，这一步动作
//	WeChat::valid();
//}
//然后再
//public function handler()
//{
	//		实例化hd中的微信sdk中message类---这里注意的是使用houdunwang\Wechat类，命名空间不要写错
//		$instance=WeChat::instance('message');
		//获得分析法来的消息，注意这里的调用Content的时候首字母大写
//	$content  = $instance->Content;//粉丝发送来的消息
	//然后通过分析发过来的关键词到关键词的数据表中去查找数据
//	$keywords=Keywords::where('keywords',$content)->first();
//	if($keywords) {

//	}
//}//handler函数结束




